﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using MoviTiendas.Logica;

namespace MoviTiendas.Interfaz
{
    public partial class PaginaInfoLista : PhoneApplicationPage
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Lista de celdas, las cuales contienen items
         */
        public List<CeldaItem2> celdas { get; set; }

        /**
         * Lista seleccionada en PaginaPrincipal
         */
        public Lista lista { get; set; }


        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         */
        public PaginaInfoLista()
        {
            InitializeComponent();
            lista = ParametroPaginas.darParametroConIndice(0) as Lista;
            PageTitle.Text = lista.nombre;
            inicializar();

        }

        private void inicializar()
        {
            celdas = new List<CeldaItem2>();

            int total = 0;
            //Agrega la celda a la listItems para que se pinte
            foreach (Item item in lista.items)
            {
                CeldaItem2 celda = new CeldaItem2(this, item);
                listItems.Items.Add(celda);
                total += (item.precioUnitario * item.cantidad);
            }
            lblTotal.Text = total + "";
        }
        // ------------------------------------------------------------------------------------
        // Métodos generales
        // ------------------------------------------------------------------------------------

        /**
         * Método que se ejecuta cuando se selecciona una celda
         * @celda - Celda seleccionada por medio de la interfaz gráfica
         */
        public void seleccionarCelda(Object celda)
        {
            if (celda.GetType().ToString().Equals("MoviTiendas.Interfaz.CeldaItem2"))
            {
                ParametroPaginas.reiniciarParametros("PaginaInfoItem");
                ParametroPaginas.agregarParametro((celda as CeldaItem2).item);
                ParametroPaginas.agregarParametro(this.GetType().ToString());

                NavigationService.Navigate(new Uri("/Interfaz/PaginaInfoItem.xaml", UriKind.RelativeOrAbsolute));
            }
            
        }


        // ------------------------------------------------------------------------------------
        // Métodos manejadores de eventos
        // ------------------------------------------------------------------------------------

        /**
         * Maneja el evento en el que se oprime el botón btnACarrito
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnACarrito_Click(object sender, RoutedEventArgs e)
        {
            lista.enviarItemsACarritos();
            MessageBox.Show("La lista ha sido agregada a los carritos de compras","Lista agregada", MessageBoxButton.OK);
        }

        /**
         * Maneja el evento en el que se navega a la página
         * @e - Evento
         */
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            listItems.Items.Clear();
            inicializar();
        }
    }
}